package com.ygbhu.design.single;

/**
 * @program: design-pattern
 * @description:
 * @author: smzhu3
 * @create: 2021-06-16 09:41
 **/
public class Test {
    public static void main(String[] args) {
        //不加双重锁，懒汉式不安全
//        LazyMan singleton = LazyMan.getInstance();
//        LazyMan singleton2 = LazyMan.getInstance();
//        for (int i = 0; i < 10; i++) {
//            new Thread(() -> {
//                LazyMan.getInstance();
//            }).start();
//        }

        /***
         * @Description: 静态内部类 采用了类装载的机制来保证初始化实例时只有一个线程，不同的是，Holder单例模式是将实例的初始化放到了静态类中去实现 无法进行参数传递  推荐使用
         * @param args
         * @Author: smzhu3
         * @Date: 2021/6/16 10:51
         */
//        Singleton singleton1 = Singleton.getInstance();
//        Singleton singleton2 = Singleton.getInstance();
//        System.out.println(singleton1);
//        System.out.println(singleton2);

        /***
         * @Description: 枚举实现,线程安全  推荐使用
         * @param args
         * @Author: smzhu3
         * @Date: 2021/6/16 10:51
         */
        EnumSingleton.getInstance();
    }
}
